home *** CD-ROM | disk | FTP | other *** search
- /* xdr_ptrace.c - xdr routines for remote ptrace calls */
-
- /* Copyright 1984,1985,1986,1987,1988,1989 Wind River Systems, Inc. */
- /* extern char copyright_wind_river[]; static char *copyright=copyright_wind_river;*/
-
- /*
- modification history
- --------------------
- 01a,05jun90,llk extracted from xdr_ptrace.h, version 01c.
- */
-
- #include <vxWorks.h>
- #include <rpc/rpc.h>
- #include <xdr_ptrace.h>
-
- #define MAX_LEN 32000
-
- /********************************************************************
- *
- * xdr_regs_ptr -
- *
- * xdr routine to get regs* branch of discriminated union ptrace_info
- *
- */
-
- LOCAL bool_t xdr_regs_ptr(xdrs,objp)
- XDR *xdrs;
- struct regs **objp;
- {
- return (xdr_pointer(xdrs, (char **) objp, sizeof(struct regs), xdr_regs));
- } /* xdr_regs_ptr */
-
- /********************************************************************
- *
- * xdr_fp_status_ptr -
- *
- * xdr routine for fp_status * branch of discrimanated union
- *
- */
-
- LOCAL bool_t xdr_fp_status_ptr(xdrs,objp)
- XDR *xdrs;
- struct fp_status **objp;
- {
- return(xdr_pointer(xdrs, (char **) objp, sizeof(struct fp_status),
- xdr_fp_status));
- } /* xdr_fp_status_ptr */
-
- #ifndef I80960
- /********************************************************************
- *
- * xdr_fpa_regs_ptr -
- *
- * xdr routine for fpa_regs* branch of ptrace_info
- *
- */
-
- LOCAL bool_t xdr_fpa_regs_ptr(xdrs,objp)
- XDR *xdrs;
- struct fpa_regs **objp;
- {
- if (! xdr_pointer(xdrs, (char **) objp, sizeof(struct fpa_regs),
- xdr_fpa_regs))
- return(FALSE);
- else
- return(TRUE);
- } /* xdr_fpa_regs_ptr */
- #endif
-
- /********************************************************************
- *
- * xdr_c_bytes_ptr -
- *
- * xdr routine for counted bytes branch of ptrace_info
- *
- */
-
- LOCAL bool_t xdr_c_bytes_ptr(xdrs,objp)
- XDR *xdrs;
- C_bytes **objp;
- {
- return(xdr_pointer(xdrs, (char **) objp, sizeof(C_bytes), xdr_c_bytes));
- } /* xdr_c_bytes_ptr */
-
- /********************************************************************
- *
- * xdr_ptrace_info -
- *
- * xdr routine for discriminated union ptrace_info
- *
- */
-
- bool_t xdr_ptrace_info(xdrs,objp)
- XDR *xdrs;
- Ptrace_info *objp;
- {
- static struct xdr_discrim choices[] =
- {
- { (int) REGS, xdr_regs_ptr },
- { (int) FPREGS, xdr_fp_status_ptr },
- #ifndef I80960
- { (int) FPAREGS, xdr_fpa_regs_ptr },
- #endif
- { (int) DATA, xdr_c_bytes_ptr },
- { __dontcare__, NULL }
- };
-
- return(xdr_union(xdrs, (enum_t *) &objp->ttype,
- (char *) &objp->more_data, choices, xdr_void));
- } /* xdr_ptrace_info */
-
- /********************************************************************
- *
- * xdr_rptrace -
- *
- * xdr routine for remote ptrace data into server
- *
- */
-
- bool_t xdr_rptrace(xdrs,objp)
- XDR *xdrs;
- Rptrace *objp;
- {
- if (! xdr_int(xdrs, &objp->pid))
- return(FALSE);
- if (! xdr_int(xdrs, &objp->data))
- return(FALSE);
- if (! xdr_int(xdrs, &objp->addr))
- return(FALSE);
- if (! xdr_ptrace_info(xdrs, &objp->info))
- return(FALSE);
-
- return(TRUE);
- } /* xdr_rptrace */
-
- /********************************************************************
- *
- * xdr_ptrace_return -
- *
- * xdr routine for remote ptrace data returned by server
- *
- */
-
- bool_t xdr_ptrace_return(xdrs, objp)
- XDR *xdrs;
- Ptrace_return *objp;
- {
- if (! xdr_int(xdrs, &objp->status))
- return(FALSE);
- if (! xdr_int(xdrs, &objp->errno))
- return(FALSE);
- if (! xdr_ptrace_info(xdrs, &objp->info))
- return(FALSE);
-
- return(TRUE);
- } /* xdr_ptrace_return */
-
- /********************************************************************
- *
- * xdr_c_bytes -
- *
- * xdr routine for counted bytes
- *
- */
- bool_t xdr_c_bytes(xdrs,objp)
- XDR *xdrs;
- C_bytes *objp;
- {
- return(xdr_bytes(xdrs, &objp->bytes, (u_int *) &objp->len, MAX_LEN));
- } /* xdr_c_bytes */
-
-